package com.tfswx.fljdmxyy.service;

import com.tfswx.fljdmxyy.dto.dwgl.*;
import com.tfswx.fljdmxyy.query.dwgl.DwxxQueryParam;
import com.tfswx.fljdmxyy.query.dwgl.DwxxQueryResult;
import com.tfswx.fljdmxyy.query.dwgl.ZzjgQueryParam;
import com.tfswx.fljdmxyy.query.dwgl.ZzjgQueryResult;

import java.util.List;

/**
 * 单位管理服务
 *
 * @Author 陈文佳
 * @Date 2023/03/24
 */
public interface DwglService {
    /**
     * 新增单位
     *
     * @param dto 新增单位入参
     * @return DwxxAddOutputDTO 新增单位出参
     */
    DwxxAddOutputDTO addDwxx(DwxxAddInputDTO dto);

    /**
     * 查询单位
     *
     * @param dto 查询单位入参
     * @return DwxxGetOutputDTO 查询单位出参
     */
    DwxxGetOutputDTO getDwxx(DwxxGetInputDTO dto);

    /**
     * 修改单位信息
     *
     * @param dto 修改单位信息入参
     * @return DwxxUpdateOutputDTO 修改单位信息出参
     */
    DwxxUpdateOutputDTO updateDwxx(DwxxUpdateInputDTO dto);

    /**
     * 删除单位
     *
     * @param dto 删除单位入参
     * @return DwxxDeleteOutputDTO 删除单位出参
     */
    DwxxDeleteOutputDTO deleteDwxx(DwxxDeleteInputDTO dto);

    /**
     * 查询所有单位
     *
     * @return List<DwxxQueryResult> 查询所有单位出参
     */
    List<DwxxQueryResult> queryDwxx();

    /**
     * 查询单位部门角色人员树（统一业务）
     *
     * @param param 查询单位部门角色人员树入参
     * @return List<ZzjgQueryResult> 查询单位部门角色人员树出参
     */
    List<ZzjgQueryResult> queryZzjg(ZzjgQueryParam param);

    /**
     * 查询下级单位
     *
     * @param param 查询下级单位入参
     * @return List<DwxxQueryResult> 查询下级单位出参
     */
    List<DwxxQueryResult> queryDwlb(DwxxQueryParam param);
}
